package sv.com.renacempleo.web.controller.red;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import sv.com.renacempleo.dto.red.RedOferta;
import sv.com.renacempleo.dto.red.RedOfertaConocimiento;
import sv.com.renacempleo.dto.red.RedOfertaContacto;
import sv.com.renacempleo.dto.red.RedOfertaDatos;
import sv.com.renacempleo.dto.red.RedOfertaDatosEntrevista;
import sv.com.renacempleo.dto.red.RedOfertaFormacionAcademica;
import sv.com.renacempleo.dto.red.RedOfertaHabilidad;
import sv.com.renacempleo.dto.red.RedOfertaHorario;
import sv.com.renacempleo.dto.red.RedOfertaIdioma;
import sv.com.renacempleo.dto.red.RedOfertaRequisitos;
import sv.com.renacempleo.dto.red.RedOfertaSucursales;
import sv.com.renacempleo.exception.WebException;
import sv.com.renacempleo.web.controller.BaseController;
import sv.com.renacempleo.web.controller.objects.RedOfertaForm;
import sv.com.renacempleo.web.util.DBContext;
import sv.com.renacempleo.web.util.WebUtilidades;

@Controller
@RequestMapping("/red/oferta")
public class RedOfertaController extends BaseController{

	private static final long serialVersionUID = 8522819316043211365L;

	@RequestMapping(value = "/view", method = {RequestMethod.GET, RequestMethod.POST})
	public String view(ModelMap model) {
		model.addAttribute(WebUtilidades.HEADER_TITLE, "OFERTAS");
		return "red/oferta/redOfertaDetalle";
	}
	
	@RequestMapping(value = "/findBy", method = {RequestMethod.GET, RequestMethod.POST})
	public void findBy(@ModelAttribute RedOfertaForm redOfertaForm, HttpServletResponse request) {
		serializeCollection(DBContext.getRedOfertaDao().findBy(redOfertaForm), request);
	}
	
	@RequestMapping(value = "/findById", method = {RequestMethod.GET, RequestMethod.POST})
	public void findById(@RequestParam(required = false) Long redOfertaId, HttpServletResponse response) {
		Map<String, Object> result = new HashMap<String, Object>();
		Map<String, Object> catalogos = new HashMap<String, Object>();
		try{
			catalogos.put("ctgOficinas", DBContext.getCtgOficinasDao().findAllActivesAsArray());
			catalogos.put("ctgEmpleados", DBContext.getCtgEmpleadoDao().findAllActivesAsArray());
			catalogos.put("redEmpresas", DBContext.getRedEmpresasDao().findAllActivesAsArray());
			catalogos.put("ctgOcupaciones", DBContext.getOcupacionesDao().findAllAsArray());
			catalogos.put("ctgFormasPago", DBContext.getCtgCatalogoDao().findAllActivesByCodigoAsArray(WebUtilidades.CTG_FORMAS_DE_PAGO_PADRE));
			catalogos.put("ctgJornadaLaborales", DBContext.getCtgCatalogoDao().findAllActivesByCodigoAsArray(WebUtilidades.CTG_JORNADA_LABORAL_PADRE));
			catalogos.put("ctgGeneros", DBContext.getCtgCatalogoDao().findAllActivesByCodigoAsArray(WebUtilidades.CTG_GENERO_PADRE));
			catalogos.put("ctgEstadosCiviles", DBContext.getCtgCatalogoDao().findAllActivesByCodigoAsArray(WebUtilidades.CTG_ESTADO_CIVIL_PADRE));
			catalogos.put("ctgTipoLicencias", DBContext.getCtgCatalogoDao().findAllActivesByCodigoAsArray(WebUtilidades.CTG_TIPO_LICENCIA_PADRE));
			catalogos.put("ctgTipoVehiculos", DBContext.getCtgCatalogoDao().findAllActivesByCodigoAsArray(WebUtilidades.CTG_TIPO_VEHICULO_PADRE));
			catalogos.put("ctgTipoIncoporaciones", DBContext.getCtgCatalogoDao().findAllActivesByCodigoAsArray(WebUtilidades.CTG_INCORPORACION_PADRE));
			catalogos.put("ctgEscolaridades", DBContext.getCtgCatalogoDao().findAllActivesByCodigoAsArray(WebUtilidades.CTG_ESCOLARIDAD_PADRE));
			catalogos.put("ctgEspecialidades", DBContext.getCtgCatalogoDao().findAllActivesByCodigoAsArray(WebUtilidades.CTG_ESPECIALIDAD_PADRE));
			catalogos.put("ctgIdiomas", DBContext.getCtgCatalogoDao().findAllActivesByCodigoAsArray(WebUtilidades.CTG_IDIOMAS_PADRE));
			catalogos.put("ctgNiveles", DBContext.getCtgCatalogoDao().findAllActivesByCodigoAsArray(WebUtilidades.CTG_NIVEL_IDIOMA_PADRE));
			catalogos.put("ctgDepartamentos", DBContext.getCtgDepartamentoDao().findAllActivesAsArray());
			catalogos.put("ctgMunicipios", DBContext.getCtgMunicipioDao().findAllActivesAsArray());
			catalogos.put("ctgAreaConocmientos", DBContext.getCtgCatalogoDao().findAllActivesByCodigoAsArray(WebUtilidades.CTG_AREA_CONOCIMIENTOS_PADRE));
			catalogos.put("ctgDetalleAreaConocimientos", DBContext.getCtgDetalleAreasConocimientosDao().findAllActivesAsArray());
			catalogos.put("ctgHabilidades", DBContext.getCtgCatalogoDao().findAllActivesByCodigoAsArray(WebUtilidades.CTG_HABILIDAD_PADRE));
			catalogos.put("ctgDetalleHabilidades", DBContext.getCtgDetalleHabilidadesDao().findAllActivesAsArray());
			result.put("catalogos", catalogos);
			if(redOfertaId != null && redOfertaId > 0){
				result.put("redOferta", DBContext.getRedOfertaDao().findByIdAsMap(redOfertaId));
				result.put("redOfertaDatos", DBContext.getRedOfertaDao().findRedOfertaDatosByRedOfertaIdAsMap(redOfertaId));
				result.put("redOfertaRequisito", DBContext.getRedOfertaDao().findRedOfertaRequisitosByRedOfertaIdAsMap(redOfertaId));
				result.put("redOfertaDatosEntrevista", DBContext.getRedOfertaDao().findRedOfertaDatosEntrevistaByRedOfertaIdAsMap(redOfertaId));
				result.put("redOfertaPrestaciones", createCheckboxGroup(DBContext.getRedOfertaDao().findRedPrestacionesByRedOfertaId(redOfertaId), "redOfertaPrestaciones"));
				result.put("redOfertaDocumentos", createCheckboxGroup(DBContext.getRedOfertaDao().findRedDocumentosByRedOfertaId(redOfertaId), "redOfertaDocumentos"));
				result.put("redOfertaOtrosRequisitos", createCheckboxGroup(DBContext.getRedOfertaDao().findRedOfertaOtrosRequisitosByRedOfertaId(redOfertaId), "redOfertaOtrosRequisitos"));
				result.put("redOfertaDisponibilidad", createCheckboxGroup(DBContext.getRedOfertaDao().findRedOfertaDisponibilidadByRedOfertaId(redOfertaId), "redOfertaDisponibilidad"));
				result.put("redOfertaFormacionAcademicaList", DBContext.getRedOfertaDao().findRedOfertaFormacionAcademicaByRedOfertaId(redOfertaId));
				result.put("redOfertaIdiomaList", DBContext.getRedOfertaDao().findRedOfertaIdiomaByRedOfertaId(redOfertaId));
				result.put("redOfertaConocimientoList", DBContext.getRedOfertaDao().findRedOfertaConocimientoByRedOfertaId(redOfertaId));
				result.put("redOfertaHabilidadList", DBContext.getRedOfertaDao().findRedOfertaHabilidadByRedOfertaId(redOfertaId));
				result.put("redOfertaSucursalesList", DBContext.getRedOfertaDao().findRedOfertaSucursalesByRedOfertaId(redOfertaId));
				result.put("redOfertaContactoList", DBContext.getRedOfertaDao().findRedOfertaContactoByRedOfertaId(redOfertaId));
				result.put("redOfertaHorarioList", DBContext.getRedOfertaDao().findRedOfertaHorarioByRedOfertaId(redOfertaId));
			}
			result.put(SUCCESS, true);
		}catch(WebException e){
			logger.error(e, e);
			result.put(MESSAGE, e.getMessage());
			result.put(FAILURE, true);
		}catch(Exception e){
			logger.error(e, e);
			result.put(MESSAGE, "Problemas a tratar de cargar la informaci\u00F3n");
			result.put(FAILURE, true);
		}
		serializeObject(result, response);
	}
	
	@RequestMapping(value = "/saveRedOferta", method = {RequestMethod.GET, RequestMethod.POST})
	public void saveRedOferta(@ModelAttribute RedOferta redOferta, HttpServletResponse response){
		Map<String, Object> result = new HashMap<String, Object>();
		try{
			DBContext.getRedOfertaService().saveRedOferta(redOferta);
			result.put("redOfertaId", redOferta.getRedOfertaId());
			result.put("redOfertaFecha", redOferta.getRedOfertaFecha());
			result.put(MESSAGE, "Datos Actualizados");
			result.put(SUCCESS, true);
		}catch(WebException e){
			logger.error(e, e);
			result.put(MESSAGE, e.getMessage());
			result.put(FAILURE, true);
		}catch(Exception e){
			logger.error(e, e);
			result.put(MESSAGE, "Problemas a tratar de cargar la informaci\u00F3n");
			result.put(FAILURE, true);
		}
		serializeObject(result, response);
	}
	
	@RequestMapping(value = "/saveRedOfertaDatos", method = {RequestMethod.GET, RequestMethod.POST})
	public void saveRedOfertaDatos(
			@ModelAttribute RedOfertaDatos redOfertaDatos,
			@RequestParam(required = false) String[] redOfertaPrestaciones,
			HttpServletResponse response){
		Map<String, Object> result = new HashMap<String, Object>();
		try{
			DBContext.getRedOfertaService().saveRedOfertaDatos(redOfertaDatos, redOfertaPrestaciones);
			result.put(MESSAGE, "Datos Actualizados");
			result.put(SUCCESS, true);
		}catch(WebException e){
			logger.error(e, e);
			result.put(MESSAGE, e.getMessage());
			result.put(FAILURE, true);
		}catch(Exception e){
			logger.error(e, e);
			result.put(MESSAGE, "Problemas a tratar de cargar la informaci\u00F3n");
			result.put(FAILURE, true);
		}
		serializeObject(result, response);
	}
	
	@RequestMapping(value = "/saveRedOfertaRequisitos", method = {RequestMethod.GET, RequestMethod.POST})
	public void saveRedOfertaRequisitos(
			@ModelAttribute("redOfertaRequisito") RedOfertaRequisitos redOfertaRequisito,
			@RequestParam(required = false) String[] redOfertaDocumentos,
			@RequestParam(required = false) String[] redOfertaOtrosRequisitos,
			@RequestParam(required = false) String[] redOfertaDisponibilidad,
			HttpServletResponse response){
		Map<String, Object> result = new HashMap<String, Object>();
		try{
			DBContext.getRedOfertaService().saveRedOfertaRequisitos(redOfertaRequisito, redOfertaDocumentos, redOfertaOtrosRequisitos, redOfertaDisponibilidad);
			result.put(MESSAGE, "Datos Actualizados");
			result.put(SUCCESS, true);
		}catch(WebException e){
			logger.error(e, e);
			result.put(MESSAGE, e.getMessage());
			result.put(FAILURE, true);
		}catch(Exception e){
			logger.error(e, e);
			result.put(MESSAGE, "Problemas a tratar de cargar la informaci\u00F3n");
			result.put(FAILURE, true);
		}
		serializeObject(result, response);
	}
	
	@RequestMapping(value = "/saveRedOfertaDatosEntrevista", method = {RequestMethod.GET, RequestMethod.POST})
	public void saveRedOfertaDatosEntrevista(
			@ModelAttribute RedOfertaDatosEntrevista redOfertaDatosEntrevista,
			HttpServletResponse response){
		Map<String, Object> result = new HashMap<String, Object>();
		try{
			DBContext.getRedOfertaService().saveRedOfertaDatosEntrevista(redOfertaDatosEntrevista);
			result.put(MESSAGE, "Datos Actualizados");
			result.put(SUCCESS, true);
		}catch(WebException e){
			logger.error(e, e);
			result.put(MESSAGE, e.getMessage());
			result.put(FAILURE, true);
		}catch(Exception e){
			logger.error(e, e);
			result.put(MESSAGE, "Problemas a tratar de cargar la informaci\u00F3n");
			result.put(FAILURE, true);
		}
		serializeObject(result, response);
	}
	
	@RequestMapping(value = "/delete", method = {RequestMethod.GET, RequestMethod.POST})
	public void delete(
			@RequestParam Long redOfertaId,
			HttpServletResponse response){
		Map<String, Object> result = new HashMap<String, Object>();
		try{
			DBContext.getRedOfertaService().delete(redOfertaId);
			result.put(MESSAGE, "Datos Actualizados");
			result.put(SUCCESS, true);
		}catch(WebException e){
			logger.error(e, e);
			result.put(MESSAGE, e.getMessage());
			result.put(FAILURE, true);
		}catch(Exception e){
			logger.error(e, e);
			result.put(MESSAGE, "Problemas a tratar de cargar la informaci\u00F3n");
			result.put(FAILURE, true);
		}
		serializeObject(result, response);
	}
	
	@RequestMapping(value = "/saveRedOfertaFormacionAcademica", method = {RequestMethod.GET, RequestMethod.POST})
	public void saveRedOfertaFormacionAcademica(
			@ModelAttribute RedOfertaFormacionAcademica redOfertaFormacionAcademica,
			HttpServletResponse response){
		Map<String, Object> result = new HashMap<String, Object>();
		try{
			Long redOfertaId = redOfertaFormacionAcademica.getRedOferta().getRedOfertaId();
			DBContext.getRedOfertaService().saveRedOfertaFormacionAcademica(redOfertaFormacionAcademica);
			result.put("list", DBContext.getRedOfertaDao().findRedOfertaFormacionAcademicaByRedOfertaId(redOfertaId));
			result.put(MESSAGE, "Datos Actualizados");
			result.put(SUCCESS, true);
		}catch(WebException e){
			logger.error(e, e);
			result.put(MESSAGE, e.getMessage());
			result.put(FAILURE, true);
		}catch(Exception e){
			logger.error(e, e);
			result.put(MESSAGE, "Problemas a tratar de cargar la informaci\u00F3n");
			result.put(FAILURE, true);
		}
		serializeObject(result, response);
	}
	
	@RequestMapping(value = "/deleteRedOfertaFormacionAcademica", method = {RequestMethod.GET, RequestMethod.POST})
	public void deleteRedOfertaFormacionAcademica(
			@RequestParam Long redOfertaId,
			@RequestParam Long currentId,
			HttpServletResponse response){
		Map<String, Object> result = new HashMap<String, Object>();
		try{
			DBContext.getRedOfertaService().deleteRedOfertaFormacionAcademica(currentId);
			result.put("list", DBContext.getRedOfertaDao().findRedOfertaFormacionAcademicaByRedOfertaId(redOfertaId));
			result.put(MESSAGE, "Datos Actualizados");
			result.put(SUCCESS, true);
		}catch(WebException e){
			logger.error(e, e);
			result.put(MESSAGE, e.getMessage());
			result.put(FAILURE, true);
		}catch(Exception e){
			logger.error(e, e);
			result.put(MESSAGE, "Problemas a tratar de cargar la informaci\u00F3n");
			result.put(FAILURE, true);
		}
		serializeObject(result, response);
	}
	
	@RequestMapping(value = "/saveRedOfertaIdioma", method = {RequestMethod.GET, RequestMethod.POST})
	public void saveRedOfertaIdioma(
			@ModelAttribute RedOfertaIdioma redOfertaIdioma,
			HttpServletResponse response){
		Map<String, Object> result = new HashMap<String, Object>();
		try{
			Long redOfertaId = redOfertaIdioma.getRedOferta().getRedOfertaId();
			DBContext.getRedOfertaService().saveRedOfertaIdioma(redOfertaIdioma);
			result.put("list", DBContext.getRedOfertaDao().findRedOfertaIdiomaByRedOfertaId(redOfertaId));
			result.put(MESSAGE, "Datos Actualizados");
			result.put(SUCCESS, true);
		}catch(WebException e){
			logger.error(e, e);
			result.put(MESSAGE, e.getMessage());
			result.put(FAILURE, true);
		}catch(Exception e){
			logger.error(e, e);
			result.put(MESSAGE, "Problemas a tratar de cargar la informaci\u00F3n");
			result.put(FAILURE, true);
		}
		serializeObject(result, response);
	}
	
	@RequestMapping(value = "/deleteRedOfertaIdioma", method = {RequestMethod.GET, RequestMethod.POST})
	public void deleteRedOfertaIdioma(
			@RequestParam Long redOfertaId,
			@RequestParam Long currentId,
			HttpServletResponse response){
		Map<String, Object> result = new HashMap<String, Object>();
		try{
			DBContext.getRedOfertaService().deleteRedOfertaIdioma(currentId);
			result.put("list", DBContext.getRedOfertaDao().findRedOfertaIdiomaByRedOfertaId(redOfertaId));
			result.put(MESSAGE, "Datos Actualizados");
			result.put(SUCCESS, true);
		}catch(WebException e){
			logger.error(e, e);
			result.put(MESSAGE, e.getMessage());
			result.put(FAILURE, true);
		}catch(Exception e){
			logger.error(e, e);
			result.put(MESSAGE, "Problemas a tratar de cargar la informaci\u00F3n");
			result.put(FAILURE, true);
		}
		serializeObject(result, response);
	}
	
	@RequestMapping(value = "/saveRedOfertaConocimiento", method = {RequestMethod.GET, RequestMethod.POST})
	public void saveRedOfertaConocimiento(
			@ModelAttribute RedOfertaConocimiento redOfertaConocimiento,
			HttpServletResponse response){
		Map<String, Object> result = new HashMap<String, Object>();
		try{
			Long redOfertaId = redOfertaConocimiento.getRedOferta().getRedOfertaId();
			DBContext.getRedOfertaService().saveRedOfertaConocimiento(redOfertaConocimiento);
			result.put("list", DBContext.getRedOfertaDao().findRedOfertaConocimientoByRedOfertaId(redOfertaId));
			result.put(MESSAGE, "Datos Actualizados");
			result.put(SUCCESS, true);
		}catch(WebException e){
			logger.error(e, e);
			result.put(MESSAGE, e.getMessage());
			result.put(FAILURE, true);
		}catch(Exception e){
			logger.error(e, e);
			result.put(MESSAGE, "Problemas a tratar de cargar la informaci\u00F3n");
			result.put(FAILURE, true);
		}
		serializeObject(result, response);
	}
	
	@RequestMapping(value = "/deleteRedOfertaConocimiento", method = {RequestMethod.GET, RequestMethod.POST})
	public void deleteRedOfertaConocimiento(
			@RequestParam Long redOfertaId,
			@RequestParam Long currentId,
			HttpServletResponse response){
		Map<String, Object> result = new HashMap<String, Object>();
		try{
			DBContext.getRedOfertaService().deleteRedOfertaConocimiento(currentId);
			result.put("list", DBContext.getRedOfertaDao().findRedOfertaConocimientoByRedOfertaId(redOfertaId));
			result.put(MESSAGE, "Datos Actualizados");
			result.put(SUCCESS, true);
		}catch(WebException e){
			logger.error(e, e);
			result.put(MESSAGE, e.getMessage());
			result.put(FAILURE, true);
		}catch(Exception e){
			logger.error(e, e);
			result.put(MESSAGE, "Problemas a tratar de cargar la informaci\u00F3n");
			result.put(FAILURE, true);
		}
		serializeObject(result, response);
	}
	
	@RequestMapping(value = "/saveRedOfertaHabilidad", method = {RequestMethod.GET, RequestMethod.POST})
	public void saveRedOfertaHabilidad(
			@ModelAttribute RedOfertaHabilidad redOfertaHabilidad,
			HttpServletResponse response){
		Map<String, Object> result = new HashMap<String, Object>();
		try{
			Long redOfertaId = redOfertaHabilidad.getRedOferta().getRedOfertaId();
			DBContext.getRedOfertaService().saveRedOfertaHabilidades(redOfertaHabilidad);
			result.put("list", DBContext.getRedOfertaDao().findRedOfertaHabilidadByRedOfertaId(redOfertaId));
			result.put(MESSAGE, "Datos Actualizados");
			result.put(SUCCESS, true);
		}catch(WebException e){
			logger.error(e, e);
			result.put(MESSAGE, e.getMessage());
			result.put(FAILURE, true);
		}catch(Exception e){
			logger.error(e, e);
			result.put(MESSAGE, "Problemas a tratar de cargar la informaci\u00F3n");
			result.put(FAILURE, true);
		}
		serializeObject(result, response);
	}
	
	@RequestMapping(value = "/deleteRedOfertaHabilidad", method = {RequestMethod.GET, RequestMethod.POST})
	public void deleteRedOfertaHabilidad(
			@RequestParam Long redOfertaId,
			@RequestParam Long currentId,
			HttpServletResponse response){
		Map<String, Object> result = new HashMap<String, Object>();
		try{
			DBContext.getRedOfertaService().deleteRedOfertaHabilidades(currentId);
			result.put("list", DBContext.getRedOfertaDao().findRedOfertaHabilidadByRedOfertaId(redOfertaId));
			result.put(MESSAGE, "Datos Actualizados");
			result.put(SUCCESS, true);
		}catch(WebException e){
			logger.error(e, e);
			result.put(MESSAGE, e.getMessage());
			result.put(FAILURE, true);
		}catch(Exception e){
			logger.error(e, e);
			result.put(MESSAGE, "Problemas a tratar de cargar la informaci\u00F3n");
			result.put(FAILURE, true);
		}
		serializeObject(result, response);
	}
	
	@RequestMapping(value = "/saveRedOfertaSucursales", method = {RequestMethod.GET, RequestMethod.POST})
	public void saveRedOfertaHabilidad(
			@ModelAttribute RedOfertaSucursales redOfertaSucursales,
			HttpServletResponse response){
		Map<String, Object> result = new HashMap<String, Object>();
		try{
			Long redOfertaId = redOfertaSucursales.getRedOferta().getRedOfertaId();
			DBContext.getRedOfertaService().saveRedOfertaSucursales(redOfertaSucursales);
			result.put("list", DBContext.getRedOfertaDao().findRedOfertaSucursalesByRedOfertaId(redOfertaId));
			result.put(MESSAGE, "Datos Actualizados");
			result.put(SUCCESS, true);
		}catch(WebException e){
			logger.error(e, e);
			result.put(MESSAGE, e.getMessage());
			result.put(FAILURE, true);
		}catch(Exception e){
			logger.error(e, e);
			result.put(MESSAGE, "Problemas a tratar de cargar la informaci\u00F3n");
			result.put(FAILURE, true);
		}
		serializeObject(result, response);
	}
	
	@RequestMapping(value = "/deleteRedOfertaSucursales", method = {RequestMethod.GET, RequestMethod.POST})
	public void deleteRedOfertaSucursales(
			@RequestParam Long redOfertaId,
			@RequestParam Long currentId,
			HttpServletResponse response){
		Map<String, Object> result = new HashMap<String, Object>();
		try{
			DBContext.getRedOfertaService().deleteRedOfertaSucursales(currentId);
			result.put("list", DBContext.getRedOfertaDao().findRedOfertaSucursalesByRedOfertaId(redOfertaId));
			result.put(MESSAGE, "Datos Actualizados");
			result.put(SUCCESS, true);
		}catch(Exception e){
			logger.error(e, e);
			result.put(MESSAGE, "Problemas a tratar de actualizar la informaci\u00F3n <br />Sucursal asociado a uno o m\u00E1s contactos");
			result.put(FAILURE, true);
		}
		serializeObject(result, response);
	}
	
	@RequestMapping(value = "/saveRedOfertaContacto", method = {RequestMethod.GET, RequestMethod.POST})
	public void saveRedOfertaContacto(
			@ModelAttribute RedOfertaContacto redOfertaContacto,
			HttpServletResponse response){
		Map<String, Object> result = new HashMap<String, Object>();
		try{
			Long redOfertaId = redOfertaContacto.getRedOferta().getRedOfertaId();
			DBContext.getRedOfertaService().saveRedOfertaContacto(redOfertaContacto);
			result.put("list", DBContext.getRedOfertaDao().findRedOfertaContactoByRedOfertaId(redOfertaId));
			result.put(MESSAGE, "Datos Actualizados");
			result.put(SUCCESS, true);
		}catch(WebException e){
			logger.error(e, e);
			result.put(MESSAGE, e.getMessage());
			result.put(FAILURE, true);
		}catch(Exception e){
			logger.error(e, e);
			result.put(MESSAGE, "Problemas a tratar de cargar la informaci\u00F3n");
			result.put(FAILURE, true);
		}
		serializeObject(result, response);
	}
	
	@RequestMapping(value = "/deleteRedOfertaContacto", method = {RequestMethod.GET, RequestMethod.POST})
	public void deleteRedOfertaContacto(
			@RequestParam Long redOfertaId,
			@RequestParam Long currentId,
			HttpServletResponse response){
		Map<String, Object> result = new HashMap<String, Object>();
		try{
			DBContext.getRedOfertaService().deleteRedOfertaContacto(currentId);
			result.put("list", DBContext.getRedOfertaDao().findRedOfertaContactoByRedOfertaId(redOfertaId));
			result.put(MESSAGE, "Datos Actualizados");
			result.put(SUCCESS, true);
		}catch(WebException e){
			logger.error(e, e);
			result.put(MESSAGE, e.getMessage());
			result.put(FAILURE, true);
		}catch(Exception e){
			logger.error(e, e);
			result.put(MESSAGE, "Problemas a tratar de cargar la informaci\u00F3n");
			result.put(FAILURE, true);
		}
		serializeObject(result, response);
	}
	
	@RequestMapping(value = "/saveRedOfertaHorario", method = {RequestMethod.GET, RequestMethod.POST})
	public void saveRedOfertaHabilidad(
			@ModelAttribute RedOfertaHorario redOfertaHorario,
			HttpServletResponse response){
		Map<String, Object> result = new HashMap<String, Object>();
		try{
			Long redOfertaId = redOfertaHorario.getRedOferta().getRedOfertaId();
			DBContext.getRedOfertaService().saveRedOfertaHorario(redOfertaHorario);
			result.put("list", DBContext.getRedOfertaDao().findRedOfertaHorarioByRedOfertaId(redOfertaId));
			result.put(MESSAGE, "Datos Actualizados");
			result.put(SUCCESS, true);
		}catch(WebException e){
			logger.error(e, e);
			result.put(MESSAGE, e.getMessage());
			result.put(FAILURE, true);
		}catch(Exception e){
			logger.error(e, e);
			result.put(MESSAGE, "Problemas a tratar de cargar la informaci\u00F3n");
			result.put(FAILURE, true);
		}
		serializeObject(result, response);
	}
	
	@RequestMapping(value = "/deleteRedOfertaHorario", method = {RequestMethod.GET, RequestMethod.POST})
	public void deleteRedOfertaHorario(
			@RequestParam Long redOfertaId,
			@RequestParam Long currentId,
			HttpServletResponse response){
		Map<String, Object> result = new HashMap<String, Object>();
		try{
			DBContext.getRedOfertaService().deleteRedOfertaHorario(currentId);
			result.put("list", DBContext.getRedOfertaDao().findRedOfertaHorarioByRedOfertaId(redOfertaId));
			result.put(MESSAGE, "Datos Actualizados");
			result.put(SUCCESS, true);
		}catch(WebException e){
			logger.error(e, e);
			result.put(MESSAGE, e.getMessage());
			result.put(FAILURE, true);
		}catch(Exception e){
			logger.error(e, e);
			result.put(MESSAGE, "Problemas a tratar de cargar la informaci\u00F3n");
			result.put(FAILURE, true);
		}
		serializeObject(result, response);
	}
	
}
